package com.paphus.sdk.activity; import android.annotation.SuppressLint; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import com.paphus.brainbot.R; import com.paphus.sdk.activity.actions.HttpFlagAction; import com.paphus.sdk.activity.actions.HttpGetImageAction; import com.paphus.sdk.config.WebMediumConfig; /** * Generic activity for viewing a content's details. */ @SuppressLint("DefaultLocale") public abstract class WebMediumActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); resetView(); } @Override public void onResume() { resetView(); super.onResume(); } @Override public void onPostResume() { super.onPostResume(); if (MainActivity.wasDelete) { MainActivity.wasDelete = false; finish(); } } public void resetView() { WebMediumConfig instance = MainActivity.instance; setTitle(instance.name); if (!instance.isFlagged) { findViewById(R.id.flaggedLabel).setVisibility(View.GONE); } else { findViewById(R.id.imageView).setVisibility(View.GONE); } TextView textView = (TextView) findViewById(R.id.nameLabel); textView.setText(instance.name); textView = (TextView) findViewById(R.id.websiteLabel); textView.setText(instance.website); WebView web = (WebView) findViewById(R.id.descriptionLabel); web.loadDataWithBaseURL(null, instance.description, "text/html", "utf-8", null); web.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { try { view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); } catch (Exception failed) { return false; } return true; } }); web = (WebView) findViewById(R.id.detailsLabel); WebSettings webSettings = web.getSettings(); webSettings.setDefaultFontSize(10); web.loadDataWithBaseURL(null, instance.details, "text/html", "utf-8", null); web.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { try { view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); } catch (Exception failed) { return false; } return true; } }); web = (WebView) findViewById(R.id.disclaimerLabel); webSettings = web.getSettings(); webSettings.setDefaultFontSize(10); web.loadDataWithBaseURL(null, instance.disclaimer, "text/html", "utf-8", null); web.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { try { view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); } catch (Exception failed) { return false; } return true; } }); TextView text = (TextView) findViewById(R.id.categoriesLabel); if (text != null) { text.setText(instance.categories); } text = (TextView) findViewById(R.id.tagsLabel); text.setText(instance.tags); text = (TextView) findViewById(R.id.licenseLabel); text.setText(instance.license); text = (TextView) findViewById(R.id.creatorLabel); text.setText("by " + instance.creator); HttpGetImageAction.fetchImage(this, instance.avatar, (ImageView)findViewById(R.id.imageView)); } public abstract String getType(); /** * Flag the instance. */ @SuppressLint("DefaultLocale") public void flag() { if (MainActivity.user == null) { MainActivity.showMessage("You must sign in to flag a " + getType().toLowerCase(), this); return; } final EditText text = new EditText(this); MainActivity.prompt("Enter reason for flagging the " + getType().toLowerCase() + " as offensive", this, text, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { WebMediumConfig instance = MainActivity.instance.credentials(); instance.flaggedReason = text.getText().toString(); if (instance.flaggedReason.trim().length() == 0) { MainActivity.error("You must enter a valid reason for flagging the " + getType().toLowerCase(), null, WebMediumActivity.this); return; } HttpFlagAction action = new HttpFlagAction(WebMediumActivity.this, instance); action.execute(); } }); } public void menu(View view) { openOptionsMenu(); } }